Nejde vymazat BLOB z ACCESSu pres TADOBlobStream

Otázka od: Vagner Pavel

18. 10. 2002 9:50

Hi lidi, nevim proc, ale nasledujici kod nevymaze data z databaze. Nevi
nekdo kde delam nejakou chybu?
             dik Pavel


procedure TfrmMain.acDeletFromDBExecute(Sender: TObject);
var BS1:TADOBlobStream;

begin
 ADOtbl.Edit;
 ADOTbl.DisableControls;
 BS1:=
TADoBLOBStream.Create(TBlobField(ADOtbl.FieldByName(lbBLOBS.Items[lbBLOBS.It
emIndex])),bmReadWrite);
  try
   try
   BS1.Clear;
   except
    on E:Exception do MessageDlg(E.Message,mtError,[mbOK],0);
   end;
  finally
    BS1.Free;
  end;

  ADOtbl.Post;
  ADOtbl.Refresh;
  ADOTbl.EnableControls;
end;


This electronic mail transmission contains confidential information intended
only for the person(s) named. Any use, distribution, copying or disclosure
by another person is strictly prohibited.

Tato zpráva obsahuje důvěrné informace, určené výlučně pro uvedeného
adresáta. Jakékoliv užití, kopírování, šíření nebo předávání obsahu zprávy
jiným osobám a subjektům je přísně zakázáno.

Odpovedá: Roman

18. 10. 2002 16:11

>Hi lidi, nevim proc, ale nasledujici kod nevymaze data z databaze. Nevi
>nekdo kde delam nejakou chybu?

No ja teda tyhle ADO komponenty neznam, ale nestacilo by
ADOTable.FieldByName('...').Clear?

Roman
==============================
http://kouzelne.misto.cz

Odpovedá: Macko Martin

18. 10. 2002 13:10

A nestaci jenom

ADOtbl.Edit;
ADOtbl.FieldByName(lbBLOBS.Items[lbBLOBS.ItemIndex]).Clear;
ADOtbl.Post;

?

-----Original Message-----
From: Vagner Pavel [mailto:Vagner@ceps.cz]
Sent: Friday, October 18, 2002 10:09 AM
To: 'delphi-l@clexpert.cz'
Subject: Nejde vymazat BLOB z ACCESSu pres TADOBlobStream


Hi lidi, nevim proc, ale nasledujici kod nevymaze data z databaze. Nevi
nekdo kde delam nejakou chybu?
             dik Pavel

Odpovedá: Vagner Pavel

18. 10. 2002 15:39

nejak nestaci,
afterpost probehne,ale data v DB nejsou. fakt nevim, jinak napojene to mam
takto:
ADOconnection->ADOtable->DataSource(autoEdit:=False)->DBgrid(ReadOnly:=True)

DBgrid je tam ciste na prohlizeni, zmeny se provadej v Table,
                                                          pavel



procedure TfrmMain.ADOtblAfterPost(DataSet: TDataSet);
begin
 ShowMessage('Ted jsem postnul');
end;

procedure TfrmMain.acDeletFromDBExecute(Sender: TObject);
begin
 try
  ADOTbl.DisableControls;
  ADOtbl.Edit;
  TBlobField(ADOtbl.FieldByName(lbBLOBS.Items[lbBLOBS.ItemIndex])).Clear;
  ADOtbl.Post;
  ADOTbl.EnableControls;
 except
  on E:Exception do MessageDlg(E.Message,mtError,[mbOK],0);
 end;
end;

>A nestaci jenom

>ADOtbl.Edit;
>ADOtbl.FieldByName(lbBLOBS.Items[lbBLOBS.ItemIndex]).Clear;
>ADOtbl.Post;



This electronic mail transmission contains confidential information intended
only for the person(s) named. Any use, distribution, copying or disclosure
by another person is strictly prohibited.

Tato zpráva obsahuje důvěrné informace, určené výlučně pro uvedeného
adresáta. Jakékoliv užití, kopírování, šíření nebo předávání obsahu zprávy
jiným osobám a subjektům je přísně zakázáno.

Odpovedá: Vagner Pavel

18. 10. 2002 16:48

>No ja teda tyhle ADO komponenty neznam, ale nestacilo by
>ADOTable.FieldByName('...').Clear?

asi je neco shnileho ve state danskem, me pripada, ze ty data proste nekde
porad vysej a ne ane se jich zbavit. uz s tim dneska nemam silu bojovat, tak
az po vikendu  

  tohel porad nechodi, nevim proc

    ADOtbl.Edit;
 
ShowMessage(IntToStr(TBlobField(ADOtbl.FieldByName(lbBLOBS.Item[lbBLOBS.Item
Index])).BlobSize) ); // ukaze spravne velikost blobu
    TBlobField(ADOtbl.FieldByName(lbBLOBS.Items[lbBLOBS.ItemIndex])).Clear;
 
ShowMessage(IntToStr(TBlobField(ADOtbl.FieldByName(lbBLOBS.Items[lbBLOBS.Ite
mIndex])).BlobSize) ); //no tady porad ukazuje puvodni velikost,
podle me by tady mela bejt nula ne?
    ADOtbl.Post;


                pavel(W2000,D5, delfi amater)


PS: toto mi ale chodi, tak jsem z toho jelen

procedure TfrmMain.acReadFromMemExecute(Sender: TObject);
var s:TMemoryStream;
begin
  
  ADOtbl.Edit;
  BS1:= TADoBLOBStream.Create(TBlobField(ADOtbl.FieldByName(lbBLOBS.Items
[lbBLOBS.ItemIndex])),bmWrite);
  s:= TMemoryStream.Create;
  try
   try
    S.LoadFromFile(strFileName);
    ADOTbl.DisableControls;
    BS1.Clear;
    BS1.LoadFromStream(s);
   except
    on E:Exception do MessageDlg(E.Message,mtError,[mbOK],0);
   end;
  finally
   S.Free;
   BS1.Free;
  end;
   ADOtbl.Post;




This electronic mail transmission contains confidential information intended
only for the person(s) named. Any use, distribution, copying or disclosure
by another person is strictly prohibited.

Tato zpráva obsahuje důvěrné informace, určené výlučně pro uvedeného
adresáta. Jakékoliv užití, kopírování, šíření nebo předávání obsahu zprávy
jiným osobám a subjektům je přísně zakázáno.

Odpovedá: Macko Martin

18. 10. 2002 17:24

To ze data v DB nejsou soudis podle toho co vidis v gridu ?
Zkus pridat jeste ADOtbl.Refresh ...

-----Original Message-----
From: Vagner Pavel [mailto:Vagner@ceps.cz]
Sent: Friday, October 18, 2002 2:16 PM
To: 'delphi-l@clexpert.cz'
Subject: RE: Nejde vymazat BLOB z ACCESSu pres TADOBlobStream


nejak nestaci,
afterpost probehne,ale data v DB nejsou. fakt nevim, jinak napojene to mam
takto:
ADOconnection->ADOtable->DataSource(autoEdit:=False)->DBgrid(ReadOnly:=T
ADOconnection->ADOtable->rue)

DBgrid je tam ciste na prohlizeni, zmeny se provadej v Table,
                                                          pavel



procedure TfrmMain.ADOtblAfterPost(DataSet: TDataSet);
begin
 ShowMessage('Ted jsem postnul');
end;

procedure TfrmMain.acDeletFromDBExecute(Sender: TObject);
begin
 try
  ADOTbl.DisableControls;
  ADOtbl.Edit;
  TBlobField(ADOtbl.FieldByName(lbBLOBS.Items[lbBLOBS.ItemIndex])).Clear;
  ADOtbl.Post;
  ADOTbl.EnableControls;
 except
  on E:Exception do MessageDlg(E.Message,mtError,[mbOK],0);
 end;
end;

>A nestaci jenom

>ADOtbl.Edit;
>ADOtbl.FieldByName(lbBLOBS.Items[lbBLOBS.ItemIndex]).Clear;
>ADOtbl.Post;



This electronic mail transmission contains confidential information intended
only for the person(s) named. Any use, distribution, copying or disclosure by
another person is strictly prohibited.

Tato zpráva obsahuje důvěrné informace, určené výlučně pro uvedeného adresáta.
Jakékoliv užití, kopírování, šíření nebo předávání obsahu zprávy jiným osobám a
subjektům je přísně zakázáno.

Odpovedá: Vagner Pavel

21. 10. 2002 7:54

>To ze data v DB nejsou soudis podle toho co vidis v gridu ?
>Zkus pridat jeste ADOtbl.Refresh ...

Jednak jsem se dival DBgigu a pak jeste normalne v accessu. i kdyz tam mam
ten refresh, tak to tam proste neni. Me je jasny, ze ta sekvence prikazu
musi preci chodit, tak nevim co jsem s tim provedl ja, ze me to nechodi.
           pavel
                                  


This electronic mail transmission contains confidential information intended
only for the person(s) named. Any use, distribution, copying or disclosure
by another person is strictly prohibited.

Tato zpráva obsahuje důvěrné informace, určené výlučně pro uvedeného
adresáta. Jakékoliv užití, kopírování, šíření nebo předávání obsahu zprávy
jiným osobám a subjektům je přísně zakázáno.

Odpovedá: Macko Martin

23. 10. 2002 10:56

Neni to cele v nejake transakci ktera se necommitne ?
Nejake cachedupdate bez applyupdates ?

-----Original Message-----
From: Vagner Pavel [mailto:Vagner@ceps.cz]
Sent: Monday, October 21, 2002 7:41 AM
To: 'delphi-l@clexpert.cz'
Subject: RE: Nejde vymazat BLOB z ACCESSu pres TADOBlobStream


>To ze data v DB nejsou soudis podle toho co vidis v gridu ? Zkus pridat

>jeste ADOtbl.Refresh ...

Jednak jsem se dival DBgigu a pak jeste normalne v accessu. i kdyz tam
mam ten refresh, tak to tam proste neni. Me je jasny, ze ta sekvence
prikazu musi preci chodit, tak nevim co jsem s tim provedl ja, ze me to
nechodi.
           pavel